<html>
    <head>
        <title>高级知识点</title>
    </head>
    <body>
        <script>
            /*
                        三、高级选项 
                                除了自动验证之外，你可能还需要手动验证对象。在这种情况下，注入并使用IObjectValidator服务：

                                        1、ValidateAsync方法根据验证规则验证给定对象，如果它不处于有效状态，则抛出AbpValidationException。

                                        2、GetErrorsAsync不会引发异常，但只返回验证错误；

                            ★、IObjectValidator 
                                    IObjectValidator默认由ObjectValidator实现。ObjectValidator是可扩展的；
                                    你可以实现IObjectValidationContributor接口来贡献自定义逻辑。
                                    示例：
                                        public class MyObjectValidationContributor
                                            : IObjectValidationContributor, ITransientDependency
                                        {
                                            public Task AddErrorsAsync(ObjectValidationContext context)
                                            {
                                                // 获取当前要验证的对象
                                                var obj = context.ValidatingObject;

                                                //Add the validation errors if available
                                                context.Errors.Add(...);
                                                return Task.CompletedTask;
                                            }
                                        }
                                    请记住将你的类注册到DI（实现ITransientDependency就像在这个例子中一样）、

                                    ABP将自动发现你的类并用于任何类型的对象验证（包括自动方法调用验证）。

                            ★、IMethodInvocationValidator 方法调用验证
                                    IMethodInvocationValidator用于验证方法调用。
                                    它在内部使用IObjectValidator来验证传递给方法调用的对象。
                                    你通常不需要此服务，因为它由框架自动使用，但在极少数情况下，你可能希望在应用程序中重用或替换它。

                            ★、Fluent验证集成
                                    Volo. Abp.FluentValiri软件包将Fluent验证库集成到验证系统中（通过实现IObjectValidationContributor）。
                                    有关更多信息，请参阅FluentValidationIntegration文档。
                    */
        </script>
    </body>
</html>